package com.qqin.exeption;


import com.qqin.pojo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

@Slf4j//这是一个Lombok注解，用于自动生成日志记录器（Logger）实例。使用这个注解后，类中会自动有一个名为 log 的 Logger 实例，可以用来记录日志。
@RestControllerAdvice//这是一个Spring注解，用于定义全局异常处理器。
//@ControllerAdvice 和 @RestController 的组合，它不仅提供了 @ControllerAdvice 的功能，还自动配置了响应体的序列化。这个注解告诉Spring，这个类将处理控制器层抛出的异常。
public class ExceptionHandle {

    @ExceptionHandler(Exception.class)//这是一个Spring注解，用于指定方法处理特定类型的异常。在这里，它指定 exceptionError 方法将处理所有 Exception 类型的异常。
//处理所有未被捕获的异常。
    public Result exceptionError(Exception e) {
        log.error("系统错误", e);
        //使用Lombok生成的 log 实例记录一条错误日志，并将异常 e 作为参数传递，以便在日志中包含异常堆栈信息。

        return Result.error("系统错误");
    }

    //处理业务异常。
    @ExceptionHandler(ServiceException.class)
    public Result serviceExceptionError(ServiceException e) {
        log.error("业务异常", e);

        return Result.error(e.getMessage());
    }

}
